package com.donnees.mysql;

import java.sql.*;

import com.metier.logique.MSG;
import com.metier.persistance.Person;


/**
 * @name PersonDAO
 * @description Étend la classe AbstractDAO<Person> et implémente toutes ses méthodes abstraites.
 * 				Cette classe représente toutes les méthodes que peut effectuer une Person sur une base de données MySQL.
 * @method public - abstract - MSG - find - Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
 * @method public - abstract - MSG - findAll - Méthode récupérant tous les résultats sans filtrage.
 * @method public - abstract - MSG - delete - Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
 * @method public - abstract - MSG - update - Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
 * @method public - abstract - MSG - insert - Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
 * 
 * @method inheritage - getNombreLignesByResulSet - Retourne le nombre de lignes d'un ResultSet.
 * 
 * @author Ambroise
 * @since 07/03/2012
 * 
 */
public class PersonMysqlDAO extends MySqlDAO<Person>{
//
//	/**
//	 * @name find
//	 * @description Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
//	 * @param MSG oMSG
//	 * @return MSG
//	 */
//	@Override
//	public MSG find(MSG oMSG) {
//
//		Connection oConnection = MySqlDAOFactory.getConnection();
//		String sql = "SELECT * FROM t_person where id = ?;";
//		PreparedStatement requetePreparee = null;
//		Person personne = new Person();
//
//		try{
//			if(requetePreparee == null){
//				requetePreparee = oConnection.prepareStatement(sql);
//			}
//
//			requetePreparee.setLong(1, (Long) oMSG.getData("id"));
//
//			ResultSet resultat = requetePreparee.executeQuery();
//
//			// par défaut le ResultSet est en dehors du champ. On le place donc sur le premier résultat.
//			resultat.next();
//			personne.setId(resultat.getLong(1));
//			personne.setName(resultat.getString(2));
//			personne.setJob(resultat.getString(3));
//
//			resultat.close();
//			requetePreparee.close();
//			oConnection.close();
//
//		}catch (Exception e) {
//			// TODO: handle exception
//		}
//
//		oMSG.setData("donnees", personne);
//		return oMSG;
//
//	}
//
//	/**
//	 * @name findAll
//	 * @description Méthode récupérant tous les résultats sans filtrage.
//	 * @return MSG
//	 */
//	@Override
//	public MSG findAll() {
//		Connection oConnection = MySqlDAOFactory.getConnection();
//		String sql = "SELECT * FROM t_person;";
//		PreparedStatement requetePreparee = null;
//
//		try{
//			if(requetePreparee == null){
//				requetePreparee = oConnection.prepareStatement(sql);
//			}
//
//			ResultSet contacts = requetePreparee.executeQuery();
//
//			ResultSetMetaData metadataPersonnes = contacts.getMetaData();
//			int nombreColonnes = metadataPersonnes.getColumnCount();
//
//			// On crée un tableau à deux dimensions qui va contenir autant de lignes que de résultats puis de cases que de colonnes -1.
//			Object[][] donnees = new Object[this.getNombreLignesByResulSet(contacts)][nombreColonnes];
//
//			int i = 0;
//			contacts.beforeFirst();
//			while (contacts.next()) {
//				donnees[i][0] = contacts.getLong("id");
//				donnees[i][1] = contacts.getString("name");
//				donnees[i][2] = contacts.getString("job");
//				i++;
//			}
//
//			contacts.close();
//			requetePreparee.close();
//			oConnection.close();
//
//			MSG oMSG = new MSG();
//			oMSG.setData("donnees", donnees);
//
//			return oMSG;
//
//		}catch (Exception e) {
//			// TODO: handle exception
//			e.printStackTrace();
//		}
//
//		return null;
//	}
//
//	/**
//	 * @name delete
//	 * @description Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
//	 * @param MSG oMSG
//	 * @return MSG
//	 */
//	@Override
//	public MSG delete(MSG oMSG) {
//		// TODO Auto-generated method stub
//		return null;
//	}
//
//	/**
//	 * @name update
//	 * @description Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
//	 * @param MSG oMSG
//	 * @return MSG
//	 */
//	@Override
//	public MSG update(MSG oMSG) {
//		// TODO Auto-generated method stub
//		return null;
//	}
//
//	/**
//	 * @name insert
//	 * @description Méthode générique traitant l'objet MSG reçu en paramètre et créant la requête SQL en fonction du MSG.
//	 * @param MSG oMSG
//	 * @return MSG
//	 */
//	@Override
//	public MSG insert(MSG oMSG) {
//		// TODO Auto-generated method stub
//		return null;
//	};
//	


}
